As the world becomes ever more information-centric, we are entering an era in which it is necessary to process large volumes of heterogeneous data in near-real-time, in order to make effective decisions and maintain a competitive advantage. Traditional offline-based models of information processing and decision support are not effective here, and there has been an increasing interest in systems that process data “on-the-fly,” also known as data stream processing systems.
One task important in the use of such data stream processing systems is the task of effectively and efficiently composing an application (e.g., comprised of one or more computer programs for performing some function) used to process the data stream. This task is made more difficult by the fact that it may be unclear or unknown what resources will be consumed by the application when executed.